#ifndef TABLERO_H_
#define TABLERO_H_
#define MAX_COORD 8
#include "Lista.h"
#include "Posicion.h"
#include "Color.h"
#define MINUSCULAS 'a'
#define CASILLA_VACIA '.'
#define DELIMITADOR_FILA '/'

class Pieza;
class Tablero {
private:
	Pieza* casilleros[8][8];

public:
	Tablero();
	bool casillaNoOcupada(Posicion) const;
	bool piezaContrario(Posicion, Posicion) const;
	virtual ~Tablero();
	void moverPieza(Posicion, Posicion, Pieza*);
	Pieza *getPieza(Posicion) const;
	void setPieza(Posicion, Pieza*);
	void setCasilleroVacio(Posicion);
	Lista* observarMovimientos(Posicion) const;
	void realizarEnroque(tColor, int);
	void promocionarPieza(char, Posicion);
	void procesarTurno(const std::string&, tColor, bool, int, bool);
	friend std::ostream &operator<< (std::ostream &, Tablero &);
	friend std::istream &operator>> (std::istream &, Tablero &);
};
#endif /* TABLERO_H_ */

